package wodegua.d31_java高级.d3_annotation;

import java.lang.reflect.Method;

/**
 * 模拟Junit框架
 * 需求
 * 定义若干个方法，只要加了MyTest4注解，就会触发该方法执行。
 * 分析
 * ① 定义一个自定义注解MyTest4，只能注解方法，存活范围是一直都在。
 * ②定义若干个方法，部分方法加上@MyTest4注解修饰，部分方法不加。
 * ③ 模拟一个junit程序，可以触发加了@MyTest4注解的方法执行
 */
public class AnnotationTest4 {
    public static void main(String[] args) throws Exception {
        Class c = AnnotationTest4.class;
        Method[] m = c.getDeclaredMethods();
        for (Method method : m) {
            if (method.isAnnotationPresent(MyTest4.class)) {
                method.setAccessible(true);
                method.invoke(new AnnotationTest4());
            }
        }
    }

    @MyTest4
    public void test1(){
        System.out.println("test1执行了");
    }

    public void test2(){
        System.out.println("test2执行了");
    }

    @MyTest4
    public void test3(){
        System.out.println("test3执行了");
    }
}
